package com.ksyun.campus.metaserver.services;

import com.ksyun.campus.metaserver.domain.ReplicaData;
import com.ksyun.campus.metaserver.domain.StatInfo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface IFileOperateService {

    /**
     * 根据路径创建文件
     *
     * @param volume   分区
     * @param filePath 文件全路径
     * @return 文件创建结果：各分区副本信息
     */
    List<ReplicaData> createFile(String volume, String filePath, MultipartFile data);

    /**
     * 创建文件夹
     *
     * @param volume 分区
     * @param dir    目录
     * @return 创建文件夹是否成功
     */
    boolean mkdir(String volume, String dir);

    /**
     * 列出文件夹信息列表
     *
     * @param volume  分区
     * @param baseDir 基础文件夹
     * @return 文件夹信息列表
     */
    List<StatInfo> listDirs(String volume, String baseDir);

    /**
     * 删除文件夹
     *
     * @param volume 分区
     * @param dir    目录
     * @return 删除文件夹是否成功
     */
    boolean deleteDir(String volume, String dir);

    /**
     * 删除文件
     *
     * @param volume   分区
     * @param filePath 文件全路径
     * @return 删除文件是否成功
     */
    boolean deleteFile(String volume, String filePath);

    /**
     * 文件信息
     *
     * @param volume   分区
     * @param filePath 文件全路径
     * @return 文件信息
     */
    StatInfo getFileInfo(String volume, String filePath);
}
